Advertisement Filtering And Storage For Targeted Advertisement Systems

ABSTRACT

An advertisement storage and filtering system for selectively identifying targeted advertisements to be stored in the memory of the STB. This storing of the selected advertisements can be accomplished in a number of ways. In one embodiment, the advertisements, in real-time and as they are received at the STB, are processed by the STB and only those advertisements with the appropriate characteristics are stored on the hard drive (HD). This may require some buffering of the advertisements in the STB memory as the STB processes and determines whether or not to store the advertisement. The information required to determine whether or not to store the advertisement could also be sent in advance, e.g., as a data service in an advertisement channel. Alternatively, the STB may store incoming advertisements in a memory temporarily and subsequently determine whether or not to retain the stored advertisements.

CROSS REFERENCE TO RELATED APPLICATION

This application is a continuation of copending U.S. patent applicationSer. No. 11/134,146, filed on May 5, 2005, and entitled “AdvertisementFiltering and Storage for Targeted Advertisement Systems”, which is acontinuation of U.S. patent application Ser. No. 09/748,949, filed onDec. 27, 2000, and entitled “Advertisement Filtering and Storage forTargeted Advertisement Systems”, now abandoned, the entire disclosuresof which are incorporated herein by reference.

This application claims the benefit of U.S. Provisional Application No.60/229,156 filed on Aug. 31, 2000, and entitled “Method and System forAddressable and Program Independent Advertising”, the entire disclosureof which is incorporated herein by reference.

BACKGROUND OF THE INVENTION

Whether the television programming service is being provided by antennabroadcast, analog cable, digital broadcast satellite (DBS), digitalcable, switched digital video (SDV) or any other means, generally allviewers (subscribers) of a particular program will see the sameadvertisements (ads) in the same order at the same times. In essence,each ad is “linked” to a particular point within a particular program.This traditional paradigm for delivering ads in the stream of televisionprogramming is herein termed linked advertising. If any particularsubscriber is not viewing the particular program at the particular time,he or she will not see the ad. That is, in linked advertising, the adsare simply part of the data stream from the head end (HE), i.e., fromthe central office of the television service provider, to allsubscribers of that service.

However, with modern digital television service methods, including SDVsystems (in which television service is received over the telephonelines via a very high speed digital subscriber line (VDSL)) and digitalcable, both of which utilize the concept of addressable set-top boxes(STBs), more personalized service is now available. For instance, inboth types of systems, two-way communication between the subscriber'sSTB and the service provider via the network is possible. Further, theservice provider can send different data to different subscribers.

In telephone based systems such as SDV, the service provider canactually send different information to any individual subscriber. Infact, in one embodiment, the VDSL television delivery standardessentially is an access network utilizing asynchronous transfer mode(ATM) protocol. In digital cable systems, different data can be sent todifferent groups of customers.

Accordingly, it is an object of the present invention to provide animproved method and apparatus for delivering advertising via a network,such as a television service network.

It is another object of the present invention to provide a method and anapparatus for ad filtering and storage of targeted ads.

It is a further object of the present invention to provide a method andapparatus by which targeted ads can be inserted into the televisionprogram stream in a targeted fashion either by individual subscriber orgroup of subscribers on a network.

It is a further object of the present invention to provide a method andapparatus for providing targeted ads to individual subscribers or groupsof subscribers on a network.

BRIEF SUMMARY OF THE INVENTION

The present invention is directed at a method and apparatus forproviding targeted advertisements (ads) to the subscriber terminals,e.g., set-top boxes (STBs). In particular, the invention provides an adstorage and filtering system for selectively identifying targeted ads tobe stored in memory of the STB.

This storing of the selected ads can be accomplished in a number ofways. In one embodiment, the ads, in real-time and as they are receivedat the STB, are processed by the STB and only those ads with theappropriate characteristics are stored on the hard drive (HD). This mayrequire some buffering of the ads in the STB memory as the STB processesand determines whether or not to store the ad. The information requiredto determine whether or not to store the ad can be sent in advance,e.g., as a data service in an ad channel.

Alternatively, the STB may store incoming ads in a memory temporarilyand subsequently determine whether or not to retain the stored ads. Adetermination step may be performed to determine whether each stored adis appropriate or not, wherein the ads found to be inappropriate aredeleted.

In one embodiment, an ad channel that comprises ads to be delivered tothe STBs as well as metadata relating to splice-timing and otherinstruction is generated. The metadata may be encoded on the ad channelvia an encoder, e.g., a vertical blanking encoder. At the subscriberend, the STB decodes the ad channel, retrieves the associated timing andother instructional information, selects the appropriate ads and storesthe selected ads in appropriate splice windows for subsequent adinsertion.

While the invention is particularly suitable for inserting targeted adsinto television programming, the invention is readily adaptable toinserting any particular data into any particular stream of other datatransmitted via a communications system. Such systems can includetargeted advertising in Electronic Program Guides (EPGs) or digitaloverlay/insertion systems.

These and other features and objects of the invention will be more fullyunderstood from the following detailed description of the preferredembodiments which should be read in light of the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings, which are incorporated in and form a part ofthe specification, illustrate the embodiments of the present inventionand, together with the description serve to explain the principles ofthe invention.

In the drawings:

FIG. 1 is a block diagram of an exemplary television servicecommunication network;

FIG. 2 is a block diagram of an exemplary set-top box of FIG. 1;

FIG. 3 illustrates an exemplary advertisement queue;

FIG. 4 illustrates an exemplary process flow by which an advertisementis received and stored by the set-top box, according to one embodiment;

FIG. 5 illustrates example of how tables/maps are formed according toone embodiment;

FIG. 6 illustrates example tables/maps according to one embodiment;

FIG. 7 illustrates exemplary methods of encoding advertisement tags andtiming information using vertical blanking interval (VBI) data encodingand Motion Picture Expert Group (MPEG) data encoding;

FIG. 8 illustrates exemplary method of encoding advertisement tags andtiming information, according to two embodiments of the presentinvention; and

FIG. 9 is a functional block diagram illustrating advertisementscheduling and advertisement insertion, according to one embodiment ofthe present invention.

DETAILED DESCRIPTION

In describing a preferred embodiment of the invention illustrated in thedrawings, specific terminology will be used for the sake of clarity.However, the invention is not intended to be limited to the specificterms so selected, and it is to be understood that each specific termincludes all technical equivalents which operate in a similar manner toaccomplish a similar purpose.

With reference to the drawings, in general, and FIGS. 1 through 9 inparticular, the apparatus of the present invention is disclosed.

FIG. 1 generally illustrates three of the most common types of digitaltelevision service delivery networks with which the present inventioncan be suitably used. These include (1) Switched Digital Video (SDV)using, for instance, very high speed digital subscriber line (VDSL), (2)digital cable and (3) digital broadcast satellite (DBS). The inventionis also applicable to digital broadcast television including MultipointMultichannel Distribution System (MMDS) and Local MultichannelDistribution System (LMDS).

In a DBS system, a programming stream comprising upwards of one hundredchannel of a television programming is delivered directly from ageo-stationary satellite transmitter 12 orbiting the earth to areceiving antenna 14 mounted on or near each subscriber's home 16. Thechannels are transmitted from the antenna 14 via a cable to a satellitereceiving station 15 (which is a form of set-top box (STB)) in thesubscriber's home 16. The STB 15 selects a channel and demodulates thesignal for delivery to a monitor (e.g., a television, not shown). MostDBS systems are arranged such that data can also be sent in the upstreamdirection, that is, from the STB 15 to the DBS provider. In most DBSsystems, the STB 15 is also coupled to the telephone line and isdesigned and programmed to place telephone calls to the DBS serviceprovider to periodically send information in the upstream direction.Such information may commonly comprise requests for Pay-Per-View (PPV)programs, requests for changes in the subscription (a request that oneor more premium channels be added to the service, etc.). Moreover,hybrid DBS/DSL systems, providing high speed DSL landlines for bothupstream and downstream communications are becoming commonplace.

In a typical digital cable network 20, multiple channels of televisioninformation are transmitted from a head end (HE) or central office (CO)22 via a cable transmitter 23. Particularly, the channels aretransmitted via cables 24 to nodes 26. The nodes 26 are essentiallyswitching/routing stations which service multiple homes (usually a fewhundred). The nodes 26 route the signals to individual subscribers 28.The individual subscriber 28 will have STBs 27 that select a particularchannel from the transmit stream, demodulate it and forward it fordisplay on one or more monitors or televisions (not shown). Differentdata streams can be sent to the different nodes 26 of the network suchthat households coupled to node 26 a can receive different programmingthan households coupled to node 26 b. Thus, such systems are“addressable” by node, but not by individual subscriber. Upstreaminformation may be sent from the STB 27 to the HE/CO 22 via a dedicatedupstream channel over the cable. In cable systems that do not supporttwo-way communication, the upstream “channel” can be through thetelephone as described above in connection with DBS systems.

In accordance with a third common type of system, namely, switcheddigital video (SDV) 30, television programming is transmitted over theregular telephone network. Particularly, television signals aretransmitted from the Central Office (CO) 22 via a broadband digitalterminal (BDT) 31 over wire, typically fiber optic cable 32, to auniversal services access multiplexer (USAM) 34 which then delivers thedata to multiple individual subscriber/households 35 via regulartelephone twisted wire pair 36 using VDSL modems and protocols. The USAM34 receives a wide bandwidth signal comprising some or all of thetelevision channels. However, because of the bandwidth limitations oftwisted wire pair 36, typically only about one to four channel oftelevision programming at a time can be delivered from the USAM 34 tothe subscriber/household 35, depending, inter alia, on the physicaldistance of the residence from the USAM 34.

Accordingly, the subscriber/household 35 has a STB 38 that receivessubscriber channel changes, and transmits them to the USAM 34, and thento the BDT 31. The BDT 31 switches the channel for the subscriber andsends the newly selected channel to the subscriber/household 35. SDVsystems 30 are essentially fully modern asynchronous two-waycommunication networks. Accordingly, the STB 38 can transmit informationupstream via the same VDSL modem that receives the downstream signals.SDV systems 30 typically operate using an asynchronous transfer mode(ATM) protocol, which is well-known in the networking arts.

In an alternative embodiment, the signals are transmitted from the HE/CO22 via the BDT 31 to a broadband network unit (BNU) 33. The BNU 33delivers the data to individual households 35 using coaxial cable 37.

FIG. 2 is a block diagram showing the basic components of a STB 200within which the present invention may be incorporated, whether it befor DBS, SDV, digital cable or any other system. The STB 200 includes aninput port 202 for receiving to an input signal, e.g., a coaxial cablein the case of analog or digital cable TV, the telephone line in thecase of SDV or an input cable from an antenna in the case of DBS. Theinput signal may be an analog or digital television input signal.Alternatively, the input signal may be a video stream or multimediastream such as a motion picture expert group (MPEG) signal from anycommunications network, such as the Internet. The STB 200 includes asystem control unit (SCU) 204 which controls operation of the componentsof the STB 200. The SCU 204 essentially is a central processing unit(CPU) and may be any digital processing device, such as amicroprocessor, finite state machine (FSM), digital signal processor(DSP), application specific integrated circuit (ASIC), general purposecomputer, etc. The SCU 204 receives commands from the subscriber, suchas through infrared (IR) reception of commands from a handheld remotecontrol unit (not shown) through an IR receiving circuit 208. The SCU204 decodes the commands and forwards control signals to other circuitsin the STB 200 in order to carry out the subscriber's commands, such aschanging the channel. The STB 200 further includes a read only memory(ROM) 210 containing software and fixed data used for operating the STB200, and a random access memory (RAM) 212 for storing changeable data,such as the instructions and ads in accordance with the presentinvention. Preferably, the STB 200 also includes a separate internal orexternal large memory device, such as a hard disk (HD) 214 or opticaldisk drive for storing the very large amounts of data that comprisedigital multimedia data, e.g., television programs and ads. The SCU 204,RAM 212, ROM 210 and HD 214 are coupled to a master bus 216 over whichthe units can communicate with each other.

The input signal from input port 202 is passed through a tuning circuit218. Under the control of the SCU 204, the tuning circuit 218selectively passes out the data corresponding to the particular channelselected by the subscriber. The data is passed to a demodulator 220 thatdemodulates the data. A channel processing circuit 222 takes thedemodulated channel data and processes it as needed. The necessarychannel processing may comprise almost nothing to significant processingof the data depending on the particular form of the input data and thefeatures of the STB 200, which would be familiar to persons of ordinaryskill in the related arts. Exemplary functions that might be performedin the channel processing circuitry 222 include decoding an encoded datastream (e.g., MPEG, Dolby SurroundSound™) or inserting ads into the datastream in accordance with the present invention.

If received data is to be stored locally at the STB 200, the channelprocessing circuit 222 can pass the data to one of the memory devices210, 212 or 214 through the SCU 204. The output of the channelprocessing circuit 222 is typically coupled to a demultiplexer 224 whichseparates the audio and video portions of the channel and forwards themto audio output ports 226 and video output ports 228.

At least the tuner 218 and the channel processing circuit 222 arecontrolled by the SCU 204. However, the demodulator 220 anddemultiplexer 224 may also need control.

Many STBs 200 can also transmit data upstream to the HE. Such STBs 200would include a modulator 230 coupled to the SCU 204 for modulating datagenerated in the SCU 204 via an output port 232 and a cable or otherlink to the HE. It will be understood by those of ordinary skill in theart that the input port 202 and output port 232 might comprise the samephysical port.

It also will be apparent to those of ordinary skill in the related artsthat FIG. 2 is a very high level depiction of the most basic componentsof an STB 200 and that other forms are possible.

The invention will now be described in connection with the particularembodiment in which it is used to insert ads into televisionprogramming. However, it should be understood by persons of ordinaryskill in the art that the invention can be used to insert any data intoany other data stream. For instance, the invention can be applied to theInternet, streaming audio data, etc. It may also be applied to insertads in the electronic program guides (EPGs) that are frequently providedin one channel of television programming and which commonly include adsin a portion of the display. The system can also be utilized for themanagement of ads which are inserted directly into a portion of thescreen during the actual programming, such as those ads which areelectronically placed on the billboards in sports arenas or on thefield. Such ad insertion technology is commercially available fromcompanies such as Princeton Video Image, Inc., of Lawrenceville, N.J.Preferably, the information stream includes particular time intervalswhich are dedicated for insertion of such external data. However, theinvention can be utilized to replace existing data in the data stream,if desired. In the nomenclature of the specification, such designatedintervals are termed “avails”.

In accordance with a preferred embodiment of the invention, the varioustelevision programming channels include open ad (commercial) breaksdesignated specifically for the insertion of ads by the televisionservice provider. That is, the normal stream of information in thechannel includes intervals (avails), typically containing one or moredefault ads, in which an alternate ad from a source, external to thechannel data itself, can be inserted into that avail (i.e., substitutedfor the default ad). The avails may also be created when a program isrecorded on a STB 200 with memory or a personal video recorder.

The ads chosen are preferably stored in a memory local to the STB 200.The local memory for storing the ad may comprise any high volume memory,including, but not limited to, RAM 212, magnetic HD 214, FLASH, andoptical storage media such as optical disks. Alternately, the ads can bestored on a remote server coupled to the communications network.

In accordance with one embodiment of the invention, the STB 200determines whether the equipment is turned on and, if so, to whatparticular channel it is tuned, detects avails in that channel, andinserts the identified ads into the avails as they arrive.

Thus, in accordance with the invention, ads are no longer linked to anyparticular ad spot in any particular program. In accordance with theinvention, a virtual roadblock can be set up whereby the subscriber willreceive the designated ads in the designated order as avails occur inwhatever programming he or she is viewing, regardless of the channel,program or time of day. In this manner, advertisers can morespecifically reach their target audience while also being given a muchhigher level of confidence that their ads have actually been viewed bytheir target audience.

In traditional linked advertising, the advertiser pays to have an addisplayed in a designated time slot in a designated channel, regardlessof who or how many subscribers (viewers) are tuned to that channel atthat time. In accordance with the present invention, the ad is notplayed to any subscriber unless that subscriber's STB 200 is turned on.Further, the ad is played in the channel to which the STB 200 is tuned,thus virtually guaranteeing that the subscriber actually sees the adthat the advertiser has paid to have displayed.

Moreover, the television service provider can address individual STBs200 or at least groups of STBs 200 depending on the particular networkand instruct them to insert the particular ad. Accordingly, thetelevision service provider can sell advertising space to advertisers ina much more targeted fashion than in the prior art.

Ad identifiers may be transmitted to the individual STBs 200 from acentral location of the television service provider in any reasonablemanner. Preferably, the ads themselves are also transmitted to the STBs200 for storage until they are “played”. Several manners are well knownin connection with existing digital cable and VDSL systems fortransmitting data to individual receiving nodes coupled to the network.For instance, VDSL systems essentially operate on an ATM protocol withvideo typically being carried as MPEG data. In digital cable and DBSsystems, ads can be delivered in MPEG transport streams.

Numerous means are available for delivering targeted ads to the STBs 200for placement in the program streams as well as delivering the adsthemselves for storage. Common to all of these architectures aremultiple forward channels (CO/HE 22 transmitting to STBs 200) and onereturn channel (STB 200 transmitting to the CO/HE 22). One of theforward channels (hereinafter the ad channel) may be dedicated todelivering the ads, metadata about the ads and instructions for the STBs200 regarding how the ads are to be organized. The ads may be stored inone or more queues, wherein the queue is an ordered list dictating anorder in which ads should be inserted.

FIG. 3 illustrates an exemplary ad queue 300. The queue 300 consists ofm slots (Q1-Qm) with each slot containing an ad identified by itscorresponding AD_ID. It is to be noted that the AD_ID may be a pointersuch as an ad resource locator (ARL) wherein the pointer points to theSTB 200 from where to extract the contents of the corresponding ad. Forexemplary purposes, FIG. 3 illustrates a queue 300 having m slotslabeled as Q1, Q2, . . . Qm, each stack having a corresponding ARL orAD_ID. In FIG. 3, the Q1 slot 301 points to a Ford ad, the Q2 slot 303points to a Burger King ad, the Q3 slot 305 points to a Revlon ad, theQ4 slot 307 points to a K-Mart ad, and the Qm slot 321 points to a Kim'sGift Shop ad.

The return path/channel is used for, inter alia, communicating to theservice provider, which ads are stored at the STB 200, which ads havebeen placed and when, which ads are scheduled for play, etc. Suchinformation is critical for selling and charging the advertisers forplaying the ads. The return path would typically be a low bandwidthchannel since the amount of data transmitted upstream is very limitedrelative to the video and audio data, which is transmitted in thedownstream channels. Also, as previously noted, the return path need notbe through the same network as the downstream path. For instance, asdiscussed above in connection with SDV or DBS, the return path can bethrough a modem via Plain Old Telephone Service (POTS) or over a DSL.

In one exemplary embodiment, a service provider (i.e., DBS, cable, SDV,multichannel multipoint distribution system (MMDS), local multipointdistribution system (LMDS)) allocates and dedicates one or more channelsof the system to be used for delivering nothing but ads and ad metadata.This channel could be a high bandwidth channel (e.g., 6 MHz). Thischannel would be encoded and transported in the same manner as any otherprogramming content channel on the system and would include all ads thatare intended for display to any subscriber on the network.

The STBs 200 could be pre-programmed with ad maps (or have ad-maps orinstructions on how to create ad-maps downloaded to them) which indicateto the STBs 200 the types of ads they are to download from the adchannel and which types of ads they can ignore.

In one embodiment, each ad can have a tag associated with it (e.g.,embedded within it or linked to it). This tag could be a simpleidentifier or a complete ad vector describing many characteristics ofthe ad. Such metadata could be transported with the ad or in advance ofthe ad.

Each STB 200 contains, in memory, a map which tells the STB 200 theparticular advertising group or groups to which it belongs, the group orgroups, depending on the demographic, psychographic or other informationavailable to the cable service provider about the owner of the STB 200.

The ad tag or vector can be detected by the STB 200 to determine whetheror not to store the ad and when and how to display the ad. Suchdetermination can be accomplished in a number of ways depending on theapplication. If the tag is a simple identifier (of the ad or the adgroup to which it belongs) and is sent with the ad, the STB 200 couldexamine the tag at the moment the advertisement is received and eithersave it or ignore it based upon the instructions/rules preprogrammedinto the STBs 200 ad map.

The tags would indicate for which one (or more) of a plurality ofadvertising groups the ad is intended. The STBs 200 choose and storethose ads that have a matching advertising group in the tag to theadvertising group or groups in the STBs 200 advertising group map.

The ad maps can be preprogrammed into the STB 200 before it is deliveredto the subscriber. However, more preferably, the maps are sent to theSTBs 200 via the network on a periodic basis, such as is done via acarousel mechanism. In one embodiment, each ad is assigned a uniqueidentifier. Each ad also is assigned to one or more target groups (i.e.,subscribers) for which it may be appropriate. The television serviceprovider constructs a map which indicates, for each unique adidentifier, the target groups for which that ad is intended. The entiremap can be sent to each STB 200 so that each STB 200 can utilize the mapto identify and pick out the appropriate ads. Alternately, individualtables for each individual advertising group can be generated at theCO/HE 22 and sent to the appropriate STBs 200. In either case, the STBprocessor having the table examines each ad identifier and compares itto its table. If the ad identifier matches one contained in its table,the STB 200 would pick out that ad and save it. Otherwise, it wouldignore the ad.

In another embodiment, the ads delivered on the ad channel(s) could betime-division or channel-division multiplexed by advertising group. Intime division multiplexing, ads corresponding to advertising groups aretemporally grouped together when transmitted. The STBs 200 could beinstructed to download all ads sent on the ad channel during particulartime periods, those time periods corresponding to the advertising groupor groups to which it belongs. In channel division multiplexing, eachadvertising group is assigned a different advertising channel. The STBs200 are instructed to download all ads sent on the particular adchannel(s) to which it corresponds.

In a system such as SDV 30 which operates on an ATM protocol, becausethe ATM switching occurs at the HE/CO 22, the HE/CO 22 is able to directdifferent ad channels to one or more of its subscribers' STBs 200 ondifferent VPI/VCIs. In this type of embodiment, one or more ad channelscorresponding to one or more specific subscribers could be created andsent to the appropriate subscriber(s). Each STB 200 would be instructedto tune to a particular ad channel (VPI/VCIs) in order to receive andstore all the ads on that particular channel. This type of embodiment isadvantageous in that the STBs 200 would not need to filter the ads sinceeach ad received on the channel would be appropriate for that STB 200.In such a system, the CO/HE 22 could have its own ad server forgenerating the ad channel, or could receive ad channels from upstream.

In the case of analog video, the ads could be transmitted just as analogvideo is transmitted over the network and subsequently digitized at thereception point.

Ads can be delivered to the STBs 200 via low, medium or high widthchannels and in any of a variety of formats such as streaming media,MPEG2, MPEG4, and in various protocols (ATM, IP).

In a simplest embodiment of the invention, the ads are inserted in theavails in the channel to which the STB 200 is tuned in the memoryaddress order in which they are listed. In a more practical embodiment,the ads are displayed in the avails in accordance with an algorithm thattakes into account both the order of the ads and the duration of theavail relative to the duration of the ads such that the duration of thead(s) inserted into the avail match the duration of the avail.

In accordance with a more preferred embodiment of the invention, the STB200 maintains multiple ads and executes a subscriber (viewer)determination algorithm for selecting which ad to retrieve based onpredetermined criteria. For instance, a different ad may be maintainedfor each potential subscriber (television viewer) at the subscriberlocation(e.g., mother, father, child). The algorithm for determiningwhich ads are retrieved could be based on many factors including, thenature of the program to which the STB 200 is tuned, the time of day,recent channel change or volume control history which might beindicative of the particular subscriber. For instance, PCT PublicationNo. WO 033233A1, entitled “Subscriber Identification System” andassigned to the same assignee as the present invention (corresponding toU.S. patent application Ser. No. 09/452,893, filed on Dec. 2, 1999), thedisclosure of which is incorporated herein by reference, discloses amethod and apparatus in accordance with this feature for determining theprobable identity or at least characteristics of the particularsubscriber in a household that is viewing the television.

In accordance with alternative embodiments of the invention, the adsthemselves need not be stored at the STB 200 but can be stored at aseparate server on the network which communicates with the STB 200 viathe network.

The principles of one embodiment includes means to selectively store adson the STB 200, and subsequently “insert and play” them at theappropriate time. Ad are received via the ad channel or any other means,stored on a HD 214 (or other storage means including Flash memory) onthe STB 200, and selected ads are then substituted or spliced into theprogramming being delivered or the programming being viewed. Therelative timing of ad delivery/storage and subsequent play-out canwidely vary. The substitution could occur within seconds after the ad isstored, or months after it is stored depending on the application. TheSTB 200 would contain a mass storage means to store the ads and one ormore processors to determine, in one embodiment, which ads to store[note that other embodiments can include profiling and ad matching atthe STB], and carry out, inter alia, the substitution. The STB 200 couldreceive and store each ad delivered on the ad channel. However, in apreferred embodiment, the STB 200 stores only selected ads.

This storing of selected ads can be accomplished in a number of ways. Inone embodiment and according to the ad channel delivery method, the ads,in real-time and as they are received, are processed by the STB 200 andonly those ads with the appropriate characteristics are stored on the HD214. This may require some buffering of the ads in the STB memory as theSTB 200 processes and determines whether or not to store the ad oralternatively, the information required to determine whether or not tostore the ad could be sent in advance of the ad (e.g., as a data servicein an ad channel). In another embodiment, all ads are stored on the HD214 temporarily, and post-processing by the STB 200 deletes ads that arenot appropriate or desired.

FIG. 4 shows exemplary process flows by which an ad is received andstored by the STB 200 according to one embodiment. The ads are deliveredto the STB 200, preferably via an ad channel. The STB 200 either (a)stores all the ads on the HD as they are received and subsequentlyanalyzes the stored ads to determine if they are appropriate, deletingfrom the HD those ads which it determines are not appropriate (note thatthis subsequent processing can occur immediately after the ad is stored)or (b) determines, in “real time”, whether or not the ad is appropriateand stores the ad on the STB HD if the ad is appropriate (and ignores itotherwise).

As shown in FIG. 4, the exemplary process flow begins in step 401, wherethe STB 200 selects an ad from the incoming ad channel. As mentionedbefore, the ads may be transmitted to the STB 200 via an ad channel.

Upon receiving such an ad, the STB 200 may either follow the processingassociated with branch A or the processing associated with branch B. Inbranch A, the STB 200, in the step 403 stores the selected ad on thehard drive of the STB 200. In step 405, the STB processor determines ifthe selected ad is appropriate, i.e., if the incoming ad has one or morecharacteristics that match the pre-determined criteria of the STB 200.Step 407 is a decision function to evaluate if the ad is appropriate. Ifin step 407, the ad is found appropriate, it is retained on the HD (step411). If in step 407, the ad is found inappropriate, the ad is deletedfrom the HD (step 409).

If the STB 200 chooses to follow the processing associated with branchB, then in step 415, the STB 200 buffers the selected ad in the memoryof the STB 200. It is to be noted that this is different than theprocessing of branch A, where the ad is immediately stored on the HD.Herein, the ad is buffered, e.g., in a cache memory. In step 417, theSTB processor determines if the ad is appropriate. Unlike the processingof branch A, such a determination is made in real-time. In step 419, adetermination of whether the ad is appropriate is made. If the ad isfound appropriate, it is stored on the HD of the STB 200 in step 423. Ifthe ad is not found appropriate, it is deleted from the cache memory andthe cache memory is cleared (step 421).

It is to be noted that ads selected for ultimate storage can bedetermined by a number a factors, including the ads themselves (theirIDs and characterizations), the STB profile, processing instructions ofthe STB, how the ads are delivered to the STB, etc.

In one embodiment, each ad has a tag or label associated with it (e.g.,attached/embedded in it or linked to it). This label could be a simpleidentifier or a complete ad vector describing many characteristics ofthe ad. Such metadata would be transported with the ad or in advance orthe ad as described in Applicant's co-pending U.S. application Ser. No.09/635,544 filed on Aug. 10, 2000 entitled “Transporting AdCharacterization Vectors”.

This tag or ad vector can be used by the STB 200 to determine whether ornot to store the ad (and also when and how to display the ad). Suchdetermination can be accomplished in a number of ways depending on theapplication. In the case that the tag is a simple identifier (of the ador the group to which the ad belongs), and is sent with the ad, the STB200 would examine the tag of the ad as soon as the ad is received(on-the-fly), and either save it or ignore/discard it based uponinstructions/rules (e.g., a group map) possessed by the STB 200 (i.e.,previously sent to the STB by e.g., the operator). Such “on-the-fly”processing may require that each ad received be buffered in the memorywhile the processing and decision of whether or not to store the ad onthe STB is made. As soon as the decision is made, the buffer memory iscleared, and the ad is either discarded or stored on the HD (or othermemory).

In one example, the tag/label is pre-pended to the ad (or is at thebeginning of the ad). When the ad is received at the STB 200, the tag isreceived first and a decision immediately made as to whether to store orignore the ad. Such comparison processing may be accomplished prior tothe completion of the ad, at which point the ad is either storedpersistently or ignored/discarded. This case is particularly applicableto ads delivered as streaming media.

There are several ways to encode an ad tag or other metadata as will beevident to those of ordinary skill in the art. Such ad labels could beencoded in the vertical blanking interval (VBI). A decoder in the STB200 would extract this label from the video signal and use it toidentify the ad. Other methods for encoding data services in analogvideo services and how to extract those data are well known to those orordinary skill in the art.

Such an ad tag could also be encoded as a separate data service as partof each ad or for the ad channel “program”. In the case of digitallyencoded vide (e.g., MPEG-2, DVB), a separate data stream could becreated for each ad program stream. This encoded tag could be createdfor each ad prior to the ad becoming a part of the ad channel programstream, or alternatively, tags could be added for each ad after (orduring) the ad channel creation. In the first case each encoded ad hasanother elementary stream data service corresponding to the tag (i.e.,each ad has an additional program identification (PID)) which carriesthe tag for the ad. In the second case, there would be one data servicefor the entire ad channel comprising the ad_labels of the ads. Servicefor the entire program stream (i.e., a complete and continuous adchannel) carries separate data service (which is a sequence ofad-labels) and there is only 1 additional PID for the program. In eithercase, the ad tag carried with each ad or in the ad channel andtemporally linked to the ad would be used by the STB 200 to identify thead and ultimately its appropriateness.

In the case of a program data service, the data service could comprise atable that mapped each AD_ID to a label or group designation. The STB200 would decode this data service, which would identify the ad (e.g.,via an AD_ID), or identify the ads group, or both. The data servicecould also include the timing of the ads.

In the case that the ad label accompanied each ad as a separate dataservice, the tags/labels could be pre-pended to the ad (i.e., the tag tostart at the beginning of the ad), and would only require a brief amountof “ad time” in order to be completely decoded (e.g., <1 second). TheSTB 200 would comprise a data decoder and processor such that as thedata stream of the ad (i.e., ad tag) was being decoded, as soon as thelabel had been decoded, the label would be sent to the processor, and adetermination made by the STB whether or not to store the ad (based oninstructions or map table at the STB). If necessary, the incoming adcould be buffered until a decision was made whether or not to store thead. Alternatively, a data service could be sent such that when it wasdecoded, a map would be constructed of which ads were appropriate to theSTB prior to receiving the ad (i.e., the data service “leads” the ads).This would eliminate the need to buffer the ad while processing thelabels to determine whether or not to store the ad.

Alternatively, the transport stream PSI/SI information could also beused to characterize the ad channel (e.g., carry metadata regarding theads and their temporal sequence). FIGS. 5 and 6 show methods of encodingad tags and timing information according to two embodiments of thepresent invention (VBI data encoding and MPEG data encoding).

FIG. 5 illustrates a method for tagging/labeling ads according to whichgroups they are appropriate for and allowing each STB 200, belonging toone or more groups, to determine, for each ad received, whether or notto store that ad on the STB 200. In this embodiment, each unique ad isassigned a unique identifier (AD_ID). Thereon, by using AD_IDs, each adis assigned to one or more target groups (i.e., subscriber groups) thatit may be appropriate for. A map table is constructed which indicates,for each AD_ID, who target groups that AD_ID is appropriate for. Thisentire map table can be sent to each STB (e.g., via the carousel) andthe STB 200 can then process this table, identifying those AD_IDs thatwould be appropriate for its group. Alternatively, this processing couldbe done upstream (e.g., at the CO/HE) resulting in a map for eachSTB-group indicating each AD_ID that was appropriate for the STB-group.This STB-AD_ID map could then be sent to the STB 200. In either case,the STB processor has access to this table, the table revealing whichAD_IDs the STB 200 should save. As the ads come in on the ad channel,the STB 200 would examine each ad's AD_ID, and compare the AD_ID to itstable, if the AD_ID was contained in the table, then the STB would savethe ad, otherwise, it would ignore the ad, and the ad would not bestored.

FIG. 5 shows exemplary steps in accordance with this embodiment. Theprocess begins at step 501 where each STB 200 is assigned to one or moregroups, thereby an STB-group table is formed, the STB-group illustratingvarious STBs assigned to various groups. Each STB 200 with its uniqueidentifier (e.g., MAC_ID) is assigned to one or more groups and a mastertable is formed of all STB-group assignations. At step 503, each ad isassigned a unique AD_ID, and at step 505 each AD_ID is assigned to oneor more groups; this results in a master table containing allAD_ID-group associations/assignations, such a master table referred toas an AD_ID-group table. At step 507, the two master tables (STB-grouptable and AD_ID-group table) are joined (using the groups field commonto both tables) to form a master STB-AD_ID table which will contain anentry for each STB 200 and list each ad appropriate for that STB 200. Itis to be noted that the master STB-AD_ID table may be an individualSTB-AD_ID table corresponding to a particular STB 200. In step 509, fromthe master table, the ads appropriate for an individual STB 200 can beidentified, and this information used by each individual STB 200 tostore the ads appropriate for that STB 200. It is to be noted that theentire map can be sent to each STB 200 (e.g., via the carousel) or justthe map corresponding to the particular STB 200. Moreover, thedetermination of which ads are appropriate for a given STB 200 can beperformed upstream or at the STB 200 itself.

FIG. 6 illustrates, in an exemplary manner, how a master STB-AD_ID tablemay be formed. As shown in FIG. 6, an STB-group table 601, having anSTB-MAC_ID 603, and target group(s) identification 605, may be joinedwith an AD_ID table 607, having an AD_ID column 609, and target group(s)identification column 611, to form one or more master STB-AD_ID table613. For exemplary purposes, master STB-AD_ID table 613 is shown to havean STB-MAC_ID column 615 and an AD_column 617.

FIGS. 7 and 8 show methods of encoding ad tags and timing informationaccording to two embodiments of the present invention (VBI data encodingand MPEG data encoding).

Essentially, one or more new data services for the ad channel “programstream” is created and in it is sent both metadata regarding the ads andsplice information (the start and end timing) of each ad. The STB 200receives and decodes this data, examines the metadata for each ad (e.g.,its group) and then extracts/saves the appropriate ads by writing tostorage the ads received within one or more splice windows (i.e.,between the splice in and splice out points).

As illustrated in FIG. 7, an ad channel generator 703, receives metadata707 and one or more ads 709 from an ad server 701, and then by utilizinga VBI encoder 711, and an ad sequencer/multiplexer 713, transmits theinformation to a modulator (mod) 715. The output of the ad channelgenerator 703 is an ad channel 717 that is forwarded to a STB 705.

At the STB 705, the ad channel 717 is received by a demodulator/decoder719 that splits the ad channel 717 into video stream 731 and metadata729, wherein the video stream 731 is transmitted to a buffer 723, andthe metadata 729 is transmitted to a VBI decoder 721. The metadatainformation 729 is transmitted to a processor 727 that deciphers themetadata 729 to compute received instruction 733. The instructions 733are then transmitted to buffer 723 for storage. Based on the instruction733, the buffer 723 transmits the selected ads to memory 725.

In another embodiment, as illustrated in FIG. 8, an ad channel generator803 receives ads 811, and metadata 813 from an ad server 801. The adchannel generator 803 also receives metadata and splicing_timinginformation from a metadata and splicing_timing encoder 815. It is to benoted that the output of encoder 815 may be a new data servicecontaining ad metadata and splicing_timing information 817.

The output of ad channel generator 803 is one or more ad channel(s)(along with program stream) 819. The ad channel and program stream 819are then transported to STB 809 via a transport network 805 and anaccess network 807.

The STB 809 receives the ad channel (819), decodes the received dataservices (821), and identifies the timing associated with the ad (i.e.,insertion of the ad) from the splice information (822). Based on 819,821 and 822, the STB 809 accordingly identifies which ads should bestored (823). The STB 809 stores the ad in an appropriate splice window(824).

Another method of determining which ads, delivered by the ad channelwill be stored on a particular STB, is for the STB to be instructed toperiodically retain ads. That is, the STB, depending on which group(target group) it belongs is instructed (via downloaded instructions) tosave ads sent at a particular time, or within a particular time period,and to discard other ads. In an example embodiment, ads corresponding totarget groups are temporally grouped together whentransmitted/transported to the STB. Each STB, based on its membership inone or more target groups, and based on instructions received (e.g.,from a download carousel, or from another metadata/instruction channel)about the delivery timing of ads appropriate for its group in the adchannel, selectively “picks off” and stores those ads received in theappropriate timing interval.

It should be apparent to those of ordinary skill in the art, that thenumber of particular embodiments of the invention are practicallylimitless. Technologies for inserting data such as ads into other datastreams is well known. In accordance with the invention, ads stored indigital format could be readily inserted into digital video streams aswell as analog video streams. Further, as previously noted, theinvention is not limited to insertion of ads but can apply to any formof data and also is not limited to television but can be used to insertany information into any data stream.

FIG. 9 is a functional block diagram illustrating ad insertion,according to one embodiment of the present invention. In this example,the received programming stream 901 is in the form of a DVB transportstream, i.e. a multiple program transport stream (MPTS). A tuner 902extracts and demodulates the channel selected by the subscriber from theMPTS. This channel carries digital cue ones which are detected by adetection module 910. The ad to be inserted in the next detected availhas already been queued (e.g., from a scheduler 912 using the avail dataand prioritization or other scheduling algorithm). An ad insertionmodule 904 inserts or splices the queued ad according to the cue tonetiming. A resulting program stream 905 with the substituted ad isdecoded by decoder module 906 and sent to a television 908 or otherdisplay device.

The scheduler 912 is the retrieval circuit, which receives theinstructions for the organization of the ads in the local memory andthen organizes the ads in accordance with the received instructions. Inthis exemplary embodiment, the scheduler 912 retrieves the instructionsfrom a dedicated control channel 915 in the program stream 901. However,as previously noted, this is just one of many possible transport streamsfor the instructions. The scheduler 912 also provides a schedule andnotifies the ad insertion module 904 of the schedule.

When the cue tone is detected by the detection module 910, the adinsertion module 904 requests the appropriate ad from an ad storage unit914 which then sends the ad to the insertion module 904. The adinsertion module 904 then inserts the ad with the proper timing.

In this exemplary embodiment, the ads that are stored into the adstorage unit 914 are received over a dedicated ad channel in the mediastream. For instance, the scheduler 912 may include circuitry forpicking out the appropriate ads for the particular STB from a continuousstream of ads as previously described and writing them to the ad storageunit 914.

A watchdog module 920 notifies the scheduler 912 of any changes that mayrequire update or switching among multiple ads as previously described.For instance, a profiler module 922 can process information, such asdata, as to the program being watched and remote control operation sucha volume control and channel change control to attempt to determinewhich particular viewer in a subscriber household is viewing thetelevision in order to choose among the various ads as previouslydescribed.

The ad insertion module 904 generates and stores an ad insertion log 916of all insertion events. This is essentially the schedule of the adsinserted and whether or not they were inserted successfully and/ordisplayed. The insertion logs 916 will eventually be sent upstream tothe CO/HE to be used for billing advertisers based on the ads that havebeen played at each subscriber's location.

Since FIG. 9 is functional block diagram, the blocks in FIG. 9 do notnecessarily correspond to separate hardware components, such asillustrated in FIG. 2. For exemplary purposes, however, blocks 914 and916 represent portions of memory and might correspond to any one of moreof the memories 210, 212, 214 shown in FIG. 2. Functional blocks 904,906, 910, 912, 920, and 922 represent processing steps and mightcorrespond to the SCU 204 and the channel processing circuit 222 shownin FIG. 2. As processing steps, these blocks may correspond to softwareexecuted by any form of digital processor in the SCU 204. However, anyone or more of these functions could be performed by dedicated hardware(e.g., an analog circuit) within the SCU 204 or separate therefrom. Itshould be understood that the term circuit as used in this specificationis intended to be all-inclusive and to encompass analog circuits anddigital circuits, including FSMs, digital signal processors, computers,CPUs, ASICs, and programmed general purpose processors. Functional block902 corresponds to one or more of tuner block 218, demodulator block 220and demultiplexer block 224 in FIG. 2.

As described above, ads stored at the STB, can be inserted intoprogramming and displayed independent of the channel to which the STB istuned. As long as the STB is on (and tuned to a channel that allows forad insertion), ads stored on the STB can be inserted, and presented fordisplay. However, it may be desirable to know whether or not thetelevision (or other display device) is on, so that it can be known thatthe inserted ad is actually displayed. This determination of whether ornot the TV is on can be used to determine, for example, whether or notto insert the ad or whether or not to bill for an inserted ad.

If confirmation that an individual ad was actually displayed isrequired, then one of the steps that is critical for inserting (anddisplaying) ads from a premises device (e.g., STB) is to first checkwhether the monitor/display device (e.g., television) is operating(i.e., is on). This may be important so that ads are not inserted by theset top when it is certain that no one is watching (i.e., the TV isoff).

There are several means by for determining whether the TV set isoperating (i.e., is tuned on). Example methods include:

-   -   1) using a horizontal oscillator detector to provide a        probabilistic determination of whether there is a TV on in the        vicinity.    -   2) detecting the high voltage chroma sub carrier of an operating        television.    -   3) if the television is plugged into the outlet of the set top,        detecting current from the plug (small=off vs. operating current        when on).

Even if it is confirmed that the TV is on, there may be no one watchingthe TV, in which case, the ad, although displayed, would not be viewed.There are a number of methods for determining, probabilistically,whether or not anyone is in the room. For example, lack of any recentchannel changes, or the fact that the TV has been muted for an extendedperiod of time may be a probabilistic indicator that no one is in theroom.

The above identified television detection step could also beadvantageously incorporated into a forced channel change addressingsystem. The set top would not make a forced channel change to analternative target channel or ad feeder channel, if the television setis not operating. Incentivizing subscribers to watch part, most or allof the ad, and not switching the channel, or muting the volume can beprovided by the service provider or advertiser.

Having thus described a few particular embodiments of the invention,various alterations, modifications, and improvements will readily occurto those of ordinary skill in the art. Such alterations, modificationsand improvements as are made obvious by this disclosure are intended tobe part of this description though not expressly stated herein, and areintended to be within the spirit and scope of the invention.Accordingly, the foregoing description is by way of example only, andnot limiting. The invention is limited only as defined in the followingclaims and equivalents thereto.

1. A method of inserting advertisements into a programming stream in acommunications network, the method comprising: (a) selecting at leastone unscheduled advertisement to be presented at a presentation devicecorresponding to at least one subscriber; (b) storing the at least oneunscheduled advertisement at a node of a communications network; (c)detecting at least one interval in a programming stream within whichadvertisements may be inserted; (d) inserting the at least oneunscheduled advertisement into the programming stream within the atleast one interval; and (e) determining, based on the state of thepresentation device, whether the at least one unscheduled advertisementis displayed at the presentation device.
 2. The method of claim 1,further comprising: (f) determining whether the at least one subscriberviews the at least one unscheduled advertisement.
 3. The method of claim2, wherein the determining of step (f) is realized by monitoring whetherthe presentation device has been muted for a significant period of time.4. The method of claim 2, wherein the determining of step (f) isrealized by analyzing a record of recent channel changes and asubscriber profile to make a probabilistic determination as to whetherthe advertisement has been viewed.
 5. The method of claim 1, furthercomprising: (f) selecting at least one different unscheduledadvertisement to be displayed at the presentation device based on thedetermining in step (e).
 6. The method of claim 1, further comprising:(f) inserting the at least one unscheduled advertisement into adifferent programming stream based on the determining in step (e). 7.The method of claim 1, wherein the at least one unscheduledadvertisement is inserted into the programming stream in accordance witha pre-determined order.
 8. The method of claim 1, wherein the at leastone unscheduled advertisement is inserted into the programming streambased on the length of the at least one interval.
 9. The method of claim1, further comprising: (f) reporting the results of the determining instep (e).
 10. The method of claim 1, wherein the determining of step (e)is realized by using a horizontal oscillator detector.
 11. The method ofclaim 1, wherein the determining of step (e) is realized by monitoringthe high voltage chroma sub carrier.
 12. The method of claim 1, whereinthe determining of step (e) is realized by detecting the electriccurrent level in the presentation device.
 13. The method of claim 1,wherein the state of the presentation device is a determination ofwhether the presentation device is operating.
 14. An advertisementinsertion system for inserting unscheduled advertisements into atelevision programming stream in a communications network, the systemcomprising: (a) an advertisement selector, configured to select at leastone unscheduled advertisement to be presented at a presentation deviceto at least one subscriber; (b) an advertisement storage medium locatedat a node of a communications network, the storage medium containing theunscheduled advertisements; (c) an insertion processor configured todetect at least one interval in said programming stream within whichadvertisements may be inserted and insert the at least one unscheduledadvertisement into the programming stream within the detected at leastone interval; and (d) a monitor processor configured to monitor thecommunications network to determine, based on the state of thepresentation device, whether the selected at least one unscheduledadvertisement are presented to the at least one subscriber.
 15. Thesystem of claim 14, wherein the advertisement selector selects differentunscheduled advertisements to be presented to the at least onesubscriber based on an output of the monitor processor.
 16. The systemof claim 14, wherein the insertion processor is configured to insert theat least one unscheduled advertisement into a different programmingstream based on an output of the monitor processor.
 17. The system ofclaim 14, wherein the at least one unscheduled advertisement is insertedinto said programming stream in accordance with a pre-determined order.18. The system of claim 14, wherein the monitor processor is configuredto report the results of the monitoring.
 19. The system of claim 14,wherein the monitor processor is configured to determine whether the atleast one subscriber views the at least one unscheduled advertisement.20. The method of claim 19, wherein the monitor processor determineswhether the at least one subscriber views the at least one unscheduledadvertisement by analyzing a record of recent channel changes and asubscriber profile to make a probabilistic determination as to whetherthe at least one unscheduled advertisement has been viewed.
 21. Themethod of claim 14, wherein the state of the presentation device is adetermination of whether the presentation device is operating.
 22. Amethod of determining advertisement viewing, the method comprising: (a)transmitting a programming stream in a communications network to atleast one viewer, wherein the programming stream contains at least oneavail having a duration and an associated advertisement and wherein theat least one viewer is associated with at least one presentation device;(b) detecting a beginning and an end of the at least one avail in theprogramming stream; and (c) monitoring the state of the at least onepresentation device of at least from the beginning to the end of the atleast one avail to determine, via the communications network, whetherthe associated advertisement is presented to the at least one viewer.23. The method of claim 22, further comprising: (d) determining whetherthe at least one viewer views the associated advertisement.
 24. Themethod of claim 23, wherein the determining of step (d) is realized bymonitoring whether the at least one presentation device has been mutedfor a significant period of time.
 25. The method of claim 23, whereinthe determining of step (d) is realized by analyzing a record of recentchannel changes and a subscriber profile to make a probabilisticdetermination as to whether the associated advertisement has beenviewed.
 26. The method of claim 22, wherein the state of thepresentation device is a determination of whether the presentationdevice is operating.
 27. A method of inserting advertisements into apresentation stream in a communications network, the method comprising:(a) selecting at least one unscheduled advertisement to be presented ata presentation device to at least one subscriber; (b) storing the atleast one advertisement at a node of a communications network; (c)detecting intervals in the programming stream within whichadvertisements may be inserted; (e) determining whether to insert atleast one unscheduled advertisement based on the state of thepresentation device.
 28. The method of claim 27, further comprising: (f)storing a record of the at least one unscheduled advertisement that wasinserted and the time of insertion.
 29. The method of claim 27, whereinthe state of the presentation device is a determination of whether thepresentation device is operating.
 30. A method of insertingadvertisements into a presentation stream in a communications network,the method comprising: (a) selecting a plurality of unscheduledadvertisement to be presented at a presentation device to at least onesubscriber; (b) storing the plurality of unscheduled advertisements at anode of the communications network, wherein the plurality of unscheduledadvertisements has a priority for determining when each of the pluralityof unscheduled advertisements should be presented; (c) detecting anavail in a programming stream within which advertisements may beinserted; (e) determining whether to insert one of the plurality ofunscheduled advertisements based on the state of the presentationdevice; and (f) selecting one of the plurality of unscheduledadvertisements, based on the priority.
 31. The method of claim 30,wherein the avail has a duration and the selecting is based on theduration.
 32. The method of claim 30, wherein the state of thepresentation device is a determination of whether the presentationdevice is operating.